package org.tool.core.lang;

/**
 * 断言相关工具类
 *
 * @author 李坤
 * @date 2022/4/16 11:03
 */
public abstract class Assert {

    /**
     * 校验给定的数组是否为{@code null}或长度为0
     *
     * @param target  待校验的数组
     * @param message 异常信息
     */
    public static void nonEmpty(Object[] target, String message) {
        if (target == null || target.length == 0) {
            throw new IllegalArgumentException(message);
        }
    }

    /**
     * 校验给定的值是否为{@code null}
     *
     * @param target  待校验的值
     * @param message 异常信息
     */
    public static void notNull(Object target, String message) {
        if (target == null) {
            throw new IllegalArgumentException(message);
        }
    }

    /**
     * 校验给定的值是否为{@code null}
     *
     * @param target  待校验的值
     * @param message 异常信息
     */
    public static void hasText(String target, String message) {
        if (target != null || !target.isEmpty()) {
            for (int i = 0; i < target.length(); i++) {
                if (!Character.isWhitespace(target.charAt(i))) {
                    return;
                }
            }
        }
        throw new IllegalArgumentException(message);
    }

}
